home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-17
/
herkules.zip
/
HERKULES.DOC
< prev
next >
Wrap
Text File
|
1991-08-22
|
3KB
|
58 lines
Here is some piece of software I wrote about two years ago. Yesterday, someone
suggested me to post it to comp.binaries.ibm.pc, and so I herewith give it to
the public. It's a bios driver for herkules graphics mode, which hooks into
INT 10h (video) and supports a new video mode #8 with 720x360 dots. As it uses
characters of 8x8, this means 90x45 characters for those (few) programs that
use bios for screen access. Any others might get somehow confused! Also, on
my machine to clear the WHOLE screen on MsDos CLS command, I had to remove
ANSI.SYS.
This program uses two different methods of scrolling. First, the usual one:
copy almost 32kB of waitstatey video memory. This is *SLOW*, but some programs
require it, so I made it default. Second: Change the CRT controllers display
start adress. This is *FAST*, but... Use option /F when starting this program
to activate this mode.
The source code (assembly) is included. I did it in MASM 4. To build it your-
self, use:
MASM HERKULES;
LINK HERKULES;
REM ignore warning NO STACK
DEL HERKULES.OBJ
EXE2BIN HERKULES.EXE HERKULES.COM
DEL HERKULES.EXE
The comments in the source are german :-)
I did quite some effort on using fastscrolling whenever it might be of
advantage. For example, if /F is given and the bios is requested to scroll
let's say a rectangular portion in the middle of the display. Then I will
change the display start adress, thus scrolling the WHOLE screen up, and then
scroll/rotate those areas which weren't supposed to be scrolled (those
surrounding the above rectangular) back using memory copying. Quite smart, eh?
But it was of no use. I found NO program that scrolls only PORTIONS of the
screen AND that works with my program. Sigh.
Something else: I stole the 8x8 characterset from the GRAFTABL command of DOS
and then included it into this program. This implies two disadvantages:
I might get sacked by uSoft and it uses 2048 bytes both on disk and in memory.
Hey, I just remembered one other feature: line printer support!
This program supports text AND graphic hardcopies on various printers.
There is a patch area at the beginning of the COM file containing pascal
strings (first byte containing length). Do modify it, use DEBUG or SYMDEB.
Then at offset 10Fh there will be a byte containing the number of the printer
to use for hardcopies. 0 means LPT1, 1 = LPT2 etc. Cereal printers :-)
(RS232) are not supported :-(
At offset 110h there is a pascal string which is sent BEFORE a text hard-
copy. This could be a form feed or I don't know what.
120h pascal string sent AFTER a text hardcopy
130h pascal string sent BEFORE a graphic hardcopy
140h pascal string sent AFTER a graphic hardcopy
150h pascal string sent BEFORE each line of graphics hardcopy
This should set the printer into some graphics mode and also
tell him how much data there will come, that is 720 bytes.
Each byte will contain eight vertical dots.
160h pascal string sent AFTER each line of graphics hardcopy
This should include the command to move up the paper by
the appropriate amount required in graphics mode (8/72" ?)
Have fun
Stressi (q81955@pbhrzx)